define(function(require, exports, module) {
	// vue，模板路由配置
	exports = {
		// 页面数据
		data: function() {
			return {
				// 页面配置
				pageConfig: {
					// 行配置
					rowConfigs: [],
					rowDraggableConfig: {
						group: {
							name: "rowGroup",
							pull: true, //[true, false, clone]
							put: true //[true, false, array]
						},
						animation: 100,
						disabled: false,
						filter: ".disabled-drag"
					}
				},
				// 显示隐藏控制按钮
				showAllControllerBtnsGroup: true,
				// 菜单导航选项
				menuNavPageItems: [{
					name: "表单",
					children: [{
						name: "表单元素",
						itemType: "el-form",
						itemConfig: {}
					}, {
						name: "文本输入框",
						itemType: "el-input",
						itemConfig: {}
					}]
				}],
				// 菜单导航选项拖拽配置
				customPageConfig: {
					group: {
						name: "customPageItemGroup",
						pull: "clone", //[true, false, clone]
						put: false //[true, false, array]
					},
					animation: 100,
					disabled: false,
					filter: ".disabled-drag"
				}
			}
		},
		// 数据监听
		watch: {
			pageConfig: {
				handler: function(val, oldVal) {
					sessionStorage.setItem("customPage_addOrUpdate_pageConfig", JSON.stringify(val));
				},
				deep: true // 是否开启深度监听
			},
		},
		// 方法
		methods: {
			// 页面跳转
			goPage: function(path, params) {
				$indexScope.goPage(path, params);
			},
			// 通过正负数返回前进页面
			goHistory: function(n) {
				$indexScope.goHistory(n);
			},
			/**
			 * 动态添加布局
			 * @param {Object} obj 需要添加的目标对象
			 * @param {Object} type 需要添加的类型
			 */
			addPageLayout: function(obj, type) {
				switch(type) {
					case "row":
						var rowConfig = {
							disabledDrag: false, // 禁止拖动
							gutter: 0, // 栅格间隔	number	—	0
							type: "", // 布局模式，可选 flex，现代浏览器下有效	string	—	—
							justify: "start", // flex 布局下的水平排列方式	string	start/end/center/space-around/space-between	start
							align: "top", // flex 布局下的垂直排列方式	string	top/middle/bottom	top
							tag: "div", // 自定义元素标签	string	*	div
							colConfigs: [], // 列配置
							colDraggableConfig: {
								group: {
									name: "colGroup",
									pull: true, //[true, false, clone]
									put: true //[true, false, array]
								},
								animation: 100,
								disabled: false,
								filter: ".disabled-drag"
							}
						};
						obj.push(rowConfig);
						break;
					case "col":
						var colConfig = {
							disabledDrag: false, // 禁止拖动
							span: 24, // 栅格占据的列数	number	—	24
							offset: 0, // 栅格左侧的间隔格数	number	—	0
							push: 0, // 栅格向右移动格数	number	—	0
							pull: 0, // 栅格向左移动格数	number	—	0
							xs: {}, // <768px 响应式栅格数或者栅格属性对象	number/object (例如： {span: 4, offset: 4})	—	—
							sm: {}, // ≥768px 响应式栅格数或者栅格属性对象	number/object (例如： {span: 4, offset: 4})	—	—
							md: {}, // ≥992px 响应式栅格数或者栅格属性对象	number/object (例如： {span: 4, offset: 4})	—	—
							lg: {}, // ≥1200px 响应式栅格数或者栅格属性对象	number/object (例如： {span: 4, offset: 4})	—	—
							xl: {}, // ≥1920px 响应式栅格数或者栅格属性对象	number/object (例如： {span: 4, offset: 4})	—	—
							tag: "div", // 自定义元素标签	string	*	div
							customPageItems: [], // 页面对象
							customPageConfig: {
								group: {
									name: "customPageItemGroup",
									pull: true, //[true, false, clone]
									put: true //[true, false, array]
								},
								animation: 100,
								disabled: false,
								filter: ".disabled-drag"
							}
						};
						obj.push(colConfig);
						break;
					default:
						break;
				}
			},
			/**
			 * 动态删除布局
			 * @param {Object} obj 需要删除的目标对象
			 * @param {Object} delObj 需要删除的对象
			 */
			delPageLayout: function(obj, delObj) {
				alertModule().confirmMsg("确认删除？", function() {
					obj.remove(delObj);
				});
			},
			// 清空页面配置
			clearPageConfig: function() {
				var thisx = this;
				alertModule().confirmMsg("确认清空页面配置？", function() {
					thisx.pageConfig.rowConfigs = [];
				});
			}
		},
		// 导航钩子-页面渲染完运行的方法
		mounted: function() {
			var customPage_addOrUpdate_pageConfig = sessionStorage.getItem("customPage_addOrUpdate_pageConfig");
			// 读取缓存的配置
			if(customPage_addOrUpdate_pageConfig != null && customPage_addOrUpdate_pageConfig != "null") {
				try {
					this.pageConfig = JSON.parse(customPage_addOrUpdate_pageConfig);
				} catch(e) {
					sessionStorage.setItem("customPage_addOrUpdate_pageConfig", null);
				}
			}
		}
	};
	return exports;
});